Electronic devices, such as two-way radios, but including many consumer goods, are frequently controlled by microprocessors with a limited address range (typically 64K addresses). The address range is limited by the address bus width of the microprocessor.
A technique used for extending the addressable memory in a microprocessor based device is the technique of "virtual memory" addressing or "bank switching" of memory. This technique expands the memory space available and thereby the programmable functionality of the device and is popular in view of the relatively low cost of memory space. Such a technique is described, for example, in GB patent application no. 9319625.1 now Patent No. GB 9319629 of Motorola Inc., incorporated herein by reference.
In the use of bank switched memory, a region of address space addresses a memory bank, where the particular memory bank that is addressed is determined by a hardware switch. Address space which does not address the banked memory is "common" address space.
When considering the total memory map of a microprocessor, it is typical to allocate some common memory address space to random access memory (RAM) and some common address space to read only memory (ROM). The address space which addresses the bank switched memory can address RAM or ROM, depending upon the type of memory switched by the hardware switch, though it is typically ROM memory.
If a program placed in one bank has to activate programs or read/write data in another bank, it has to do this via an "access program" located in the common memory space (the un-banked memory space). This sometimes gives a heavy consumption of the common memory space by these access programs, by locating the whole commonly used program or data in the common memory space. As the functionality to be designed into the device increases, there is a greater burden on the fixed amount of common memory space available.
There is a need to reduce the usage of common memory space whilst enabling increased functionality through provision of programs or data in banked memory.